﻿using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.Json.Serialization;
using System.Threading.Tasks;

namespace Xejen.Commands.Models
{
    /// <summary>
    /// 请求参数
    /// </summary>
    public class Request
    {
        /// <summary>
        /// MES系统服务器的名称，即设备与之通讯的服务端ID。参数值暂定为: LJSERVER。
        /// </summary>
        [JsonProperty("host_name")]
        [JsonPropertyName("host_name")]
        public string HostName { get; set; }
        /// <summary>
        /// 设备所在资源编号，即当前设备ID。
        /// </summary>
        [JsonProperty("resource_no")]
        [JsonPropertyName("resource_no")]
        public string ResourceNo { get; set; }
        /// <summary>
        /// 根据所调用的功能，设置参数值，区分大小写。
        /// </summary>
        [JsonProperty("method_name")]
        [JsonPropertyName("method_name")]
        public string MethodName { get; set; }
        /// <summary>
        /// 在设备调用/发送参数时，以 GUID方式生成唯一方法ID，发送/上报给MES系统；
        /// </summary>
        /// <remarks>
        /// MES系统回复设备时，同样把本次会话的method_id作为返回参数回复给设备，设备根据返回的method_id判断该返回的会话对应哪一次调用。<br/>
        /// session_id：在设备首次调用/发送参数时，MES系统会进行资质效验，以 GUID方式生成唯一方法ID，发送/给设备;<br/>
        /// 首次通讯必须调用员工资质验证，用于判断设备是否校验设备再次调用的：把之前的返回的session _id作为返回参数给之前的连接，设备根据返回的session_id判断通讯的会话是否进行校验。
        /// </remarks>
        [JsonProperty("method_id")]
        [JsonPropertyName("method_id")]
        public string MethodId { get; set; }

        /// <inheritdoc cref="Request"/>
        public Request() { }

        /// <summary>
        /// 将元数据转为字典
        /// </summary>
        /// <returns></returns>
        public virtual Dictionary<string, object> ToDictionary()
        {
            var data = new Dictionary<string, object>
            {
                //{ "Software", Software },
                //{ "EquipmentCode", EquipmentCode },
            };

            return data;
        }
    }
}
